Dynamic Dependence in Term rewriting Systems and its Application to Program Slicing
نویسندگان
چکیده
Program slicing is a useful technique for debugging, testing, and analyzing programs. A program slice consists of the parts of a program that (potentially) affect the values computed at some point of interest. With rare exceptions, program slices have hitherto been computed and defined in ad-hoc and language-specific ways. The principal contribution of this paper is to show that general and semantically well-founded notions of slicing and dependence can be derived in a simple, uniform way from term rewriting systems (TRSs). Our slicing technique is applicable to any language whose semantics is specified in TRS form. Moreover, we show that our method admits an efficient implementation. Viewed more abstractly, our techniques yield a method for automatically deriving certain minimal equational theorems on open terms as a consequence of deriving a single theorem about a closed term. Our techniques can thus be used to augment the capabilities of equational theorem proving systems.
منابع مشابه
The Application of Term Rewriting Systems for Expressing Generic Program Slicing Algorithms
Program slicing is a technique in software engineering for isolating parts of a program that influence the value of a variable or some other arbitrary expression in that program. There exist many different slicing algorithms, with specific techniques for a variety of language features such as procedures, unstructured control flow, composite data types, pointers, concurrency, etc. This paper sho...
متن کاملUsing Program Slicing Technique to Reduce the Cost of Software Testing
Systems of computers and their application in the lives of modern human beings are vastly expanding. In any kind of computer application, failure in computer systems can lead to a range of financial and mortal losses. Indeed, the major origin of software failure can be located in designing or implementing software. With regard to these statistics, 30% of the software projects have been prospero...
متن کاملTerm Dependence Graphs 1
Program slicing is a method for decomposing programs by analyzing their data and control flow. It has many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). The so called program dependence graph—a data structure that stores control and data dependences between the statements of imperative programs—is a key ingredient of many slic...
متن کاملFormalizing a Framework for Dynamic Slicing of Program Dependence Graphs in Isabelle/HOL
Slicing is a widely-used technique with applications in e.g. compiler technology and software security. Thus verification of algorithms in these areas is often based on the correctness of slicing, which should ideally be proven independent of concrete programming languages and with the help of well-known verifying techniques such as proof assistants. As a first step in this direction, this cont...
متن کاملDynamic Slicing of Concurrent Programs : Where are We and Where is the Right Way ? ( Extended
Program slicing has been developed as a standard technique used in various software engineering activit ies including program understanding, testing, debugging, maintenance, and complexity measurement. Although both static and dynamic slicing of sequential programs have been applied to software engineering practices, there still are some challenges, problems and issues in slicing concurrent pro...
متن کامل